﻿using System.Collections.Generic;

namespace DimensionsHelper.Common.Contracts.DataCollector.Options;

/// <summary>
///     用于检测指定文本是否符合预期，并配置有符合预期和不符合预期时应当返回的值。
/// </summary>
public class Testing : INamedObject
{
    /// <summary>
    ///     是否忽略大小写
    /// </summary>
    public bool IgnoreCase { get; set; }

    /// <summary>
    ///     是否精准匹配
    /// </summary>
    public bool Exactly { get; set; } = true;

    /// <summary>
    ///     有效值集合
    /// </summary>
    public IList<string> Values { get; set; } = new List<string>();

    /// <summary>
    ///     当检测值在有效值内时使用的标记
    /// </summary>
    public string Fit { get; set; } = string.Empty;

    /// <summary>
    ///     当检测值不在有效值内时使用的标记
    /// </summary>
    public string Unfit { get; set; } = string.Empty;

    /// <summary>
    ///     Values中配置的值是否是正则表达式
    /// </summary>
    public bool IsPattern { get; set; }

    /// <summary>
    ///     获取或设置分组名。当此值不为空时，当前值检测将作为分组检测的一组值进行检测，并且会忽略<see cref="Fit" />和<see cref="Unfit" />
    /// </summary>
    public string GroupName { get; set; } = string.Empty;

    /// <summary>
    ///     测试配置名，用于其他配置中指定时使用
    /// </summary>
    public string Name { get; set; } = string.Empty;
}